package configs

import (
	"github.com/spf13/viper"
)

var Parameters configParameters

// configParameters 项目配置参数
type configParameters struct {
	Project string `mapstructure:"project"`

	Mode string `mapstructure:"mode"`

	AliSms aliSms `mapstructure:"aliSms"`

	Interval int64 `mapstructure:"interval"`

	LogPath string `mapstructure:"logPath"`

	IsLogSeparation bool `mapstructure:"isLogSeparation"`

	LogFiledAlias logFiledAlias `mapstructure:"logFiledAlias"`
}

// aliSms 阿里短信配置
type aliSms struct {
	AccessKeyId     string   `mapstructure:"accessKeyId"`
	AccessKeySecret string   `mapstructure:"accessKeySecret"`
	Endpoint        string   `mapstructure:"endpoint"`
	SignNames       []string `mapstructure:"signNames"`
	TemplateCode    string   `mapstructure:"templateCode"`
	PhoneNumbers    []string `mapstructure:"phoneNumbers"`
}

// logFiledAlias 日志字段别名
type logFiledAlias struct {
	MsgAlias string `mapstructure:"msg"`
}

// Load 获取配置参数
func Load() error {
	// 获取环境变量判断是否是生产环境
	// 从yaml文件获取nacos配置
	vconfig := viper.New()
	// 添加读取的配置文件路径
	vconfig.AddConfigPath("./")
	// 设置读取的配置文件
	vconfig.SetConfigName("config")
	// 读取文件类型
	vconfig.SetConfigType("yaml")
	// 读取yaml
	err := vconfig.ReadInConfig()
	if err != nil {
		return err
	}
	// 转译yaml文件
	if err = vconfig.Unmarshal(&Parameters); err != nil {
		return err
	}
	return nil
}
